﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Security;
using System.Security.AccessControl;
using System.Security.Permissions;
  
namespace ConfrontaTracciati.CLASSI
{

   public static class CConfiguratore
    {
        #region HELPERS

       public static void creaAlberaturaCartelle(string pPathDirPrincipale,ref Ctracciato pCTracciato)
       {
           string pathDirTemp = string.Empty;

           string pathDirPri = Path.Combine(pPathDirPrincipale,pCTracciato.Categoria); // Enum.GetName(typeof(tracciatiEnum), pTipotracciato));
           if (!Directory.Exists(pathDirPri)) Directory.CreateDirectory(pathDirPri);
           pCTracciato.pathDirBasePrincipale = pathDirPri;

           string pathDirSecondaria = pCTracciato.pathDirBaseSecondaria = Path.Combine(pathDirPri, pCTracciato.nome_tracciato);
           if (!Directory.Exists(pathDirSecondaria)) Directory.CreateDirectory(pathDirSecondaria);
           pCTracciato.pathDirBaseSecondaria = pathDirSecondaria;

            //sottocartelle
           pathDirTemp = Path.Combine(pathDirSecondaria, "TARGET");
           if (!Directory.Exists(pathDirTemp)) Directory.CreateDirectory(pathDirTemp);
           pCTracciato.path_Dir_TARGET = pathDirTemp;

           pathDirTemp = Path.Combine(pathDirSecondaria, "MIRROR");
           if (!Directory.Exists(pathDirTemp)) Directory.CreateDirectory(pathDirTemp);
           pCTracciato.path_Dir_MIRROR = pathDirTemp;

           string pathRes = "RES_" + DateTime.Now.ToString("dd.MM.yy") + "_" + DateTime.Now.ToString("HH.mm");
           pathDirTemp = Path.Combine(pathDirSecondaria, pathRes);

           if (Directory.Exists(pathDirTemp)) Directory.Delete(pathDirTemp,true); 
           Directory.CreateDirectory(pathDirTemp);
           pCTracciato.path_Dir_RES = pathDirTemp;          

           pCTracciato.path_file_MIRROR = Directory.GetFiles(pCTracciato.path_Dir_MIRROR).FirstOrDefault();
           pCTracciato.path_file_TARGET = Directory.GetFiles(pCTracciato.path_Dir_TARGET).FirstOrDefault();      

       }//fM



        #endregion

       #region "Carica - Salva configurazione XML"
           public static void CaricaConfigurazioneTracciati(string nome_file_xml, ref IList<Ctracciato> _lstTracciati)
           {           
               try
               {
                   _lstTracciati = new List<Ctracciato>();
                   System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(_lstTracciati.GetType());
                   using (TextReader reader = new StreamReader(nome_file_xml))
                   {
                       _lstTracciati = (IList<Ctracciato>)x.Deserialize(reader);
                       reader.Close();
                   }
               }
               catch(Exception ex)
               {
                   throw ex;
               }        
           }//fM
           
           public static void SalvaConfigurazioneTracciati(string nome_file_xml, ref IList<Ctracciato> _lstTracciati)
       {
           try
           {
               StreamWriter s = new StreamWriter(nome_file_xml);
               System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(_lstTracciati.GetType());
               x.Serialize(s,_lstTracciati);
               s.Close();
           }
           catch (Exception ex)
           {
               throw ex;
           }
       }
        #endregion "Carica - Salva configurazione XML"
    }//fC
}
